#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import os
import traceback

from PyQt5.QtWidgets import QApplication, QMessageBox
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QIcon

from ui.main_window import MainWindow
from core.app_controller import AppController

def exception_hook(exc_type, exc_value, exc_traceback):
    """
    全局异常处理函数
    
    Args:
        exc_type: 异常类型
        exc_value: 异常值
        exc_traceback: 异常追踪信息
    """
    # 打印异常信息到控制台
    traceback.print_exception(exc_type, exc_value, exc_traceback)
    
    # 显示异常对话框
    error_msg = ''.join(traceback.format_exception(exc_type, exc_value, exc_traceback))
    QMessageBox.critical(None, "程序出现错误", 
                        f"发生了未处理的异常:\n{error_msg}")
    
    # 继续执行系统默认的异常处理
    sys.__excepthook__(exc_type, exc_value, exc_traceback)
    
def main():
    """
    程序入口函数
    """
    # 设置全局异常处理
    sys.excepthook = exception_hook
    
    # 创建应用程序
    app = QApplication(sys.argv)
    app.setApplicationName("网络数据包分析工具")
    app.setApplicationDisplayName("网络数据包分析工具")
    app.setOrganizationName("网络数据包分析工具团队")
    app.setOrganizationDomain("example.com")
    
    # 设置应用程序样式
    app.setStyle("Fusion")
    
    # 创建主窗口
    main_window = MainWindow()
    
    # 创建应用控制器
    app_controller = AppController(main_window)
    
    # 设置主窗口的应用控制器
    main_window.app_controller = app_controller
    
    # 显示主窗口
    main_window.show()
    
    # 运行应用程序
    return app.exec_()
    
if __name__ == '__main__':
    sys.exit(main()) 